MySQL 根据日期计算季度

6次阅读
没有评论

在 MySQL 中,计算日期对应的季度有两种最常用、最简单的方法,直接用内置函数就能实现,无需复杂计算。

一、核心函数:QUARTER ()(推荐)

QUARTER(date) 是 MySQL 专门用于返回日期季度的函数,直接返回数字:

  • 1~3 月 → 返回 1
  • 4~6 月 → 返回 2
  • 7~9 月 → 返回 3
  • 10~12 月 → 返回 4

基础用法

sql

-- 示例1:直接计算指定日期的季度
SELECT QUARTER('2025-01-15');  -- 结果:1
SELECT QUARTER('2025-06-30');  -- 结果:2
SELECT QUARTER('2025-12-01');  -- 结果:4

-- 示例2:查询表中日期字段的季度(替换为你的表名和日期字段)
SELECT 
  create_time, 
  QUARTER(create_time) AS quarter 
FROM your_table;

二、组合年份 + 季度(常用报表格式)

业务中通常需要 年份 + 季度 的格式,比如 2025Q12025年第1季度

1. 格式:2025Q1

sql

SELECT 
  DATE_FORMAT(create_time, '%YQ%q') AS year_quarter
FROM your_table;
  • %Y = 4 位年份
  • %q = 季度数字(1/2/3/4)

2. 格式:2025 年第 1 季度

sql

SELECT 
  CONCAT(YEAR(create_time), '年第', QUARTER(create_time), '季度') AS year_quarter
FROM your_table;

三、兼容旧版本:用 MONTH () 计算季度

如果 MySQL 版本极旧不支持 QUARTER(),可以用月份计算:

sql

SELECT 
  create_time,
  CEIL(MONTH(create_time) / 3) AS quarter  -- 月份除以3向上取整
FROM your_table;

效果和 QUARTER() 完全一致。


四、按季度分组统计(实战常用)

统计每个季度的数据总量 / 金额:

sql

SELECT
  QUARTER(create_time) AS quarter,  -- 季度
  COUNT(*) AS total_count,         -- 总条数
  SUM(amount) AS total_amount      -- 总金额
FROM your_table
GROUP BY QUARTER(create_time)      -- 按季度分组
ORDER BY quarter;

总结

  1. 最简方案QUARTER(日期) → 直接返回 1/2/3/4
  2. 年份 + 季度DATE_FORMAT(日期, '%YQ%q') → 2025Q1
  3. 分组统计GROUP BY QUARTER(日期)
  4. 所有方法支持 date / datetime / timestamp 类型字段
正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)
验证码